Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


sbapp/ui/hardware.py 2.0.1 (486a97e4) Text, 79.69 KB

T8b949e# Copyright (c) 2026 Mark Qvist - See LICENSE.md and README.md

Tff7b72import T7ee787time
Tff7b72import T7ee787RNS

Tff7b72import T7ee787base64
Tff7b72import T7ee787threading
Tff7b72import T7ee787RNST7ee787.T7ee787vendorT7ee787.T7ee787umsgpack Tff7b72as T7ee787msgpack
Tff7b72from T7ee787kivyT7ee787.T7ee787metrics Tff7b72import Te6edf3dpTb4b4b4,Te6edf3sp
Tff7b72from T7ee787kivyT7ee787.T7ee787langT7ee787.T7ee787builder Tff7b72import Te6edf3Builder
Tff7b72from T7ee787kivyT7ee787.T7ee787coreT7ee787.T7ee787clipboard Tff7b72import Te6edf3Clipboard
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787button Tff7b72import Te6edf3MDRectangleFlatButton
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787dialog Tff7b72import Te6edf3MDDialog
Tff7b72from T7ee787kivymdT7ee787.T7ee787toast Tff7b72import Te6edf3toast
Tff7b72from T7ee787kivyT7ee787.T7ee787effectsT7ee787.T7ee787scroll Tff7b72import Te6edf3ScrollEffect
Tff7b72from T7ee787kivyT7ee787.T7ee787clock Tff7b72import Te6edf3Clock
Tff7b72from T7ee787kivyT7ee787.T7ee787uixT7ee787.T7ee787screenmanager Tff7b72import Te6edf3NoTransitionTb4b4b4, Te6edf3SlideTransition

Te6edf3TRANSITION_DURATION Tff7b72= T79c0ff0.25
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3ll_ot Tff7b72= T79c0ff0.55
Te6edf3ll_ft Tff7b72= T79c0ff0.275
Tff7b72elseTb4b4b4:
Te6edf3ll_ot Tff7b72= T79c0ff0.4
Te6edf3ll_ft Tff7b72= T79c0ff0.275

Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72from T7ee787uiT7ee787.T7ee787helpers Tff7b72import Te6edf3dark_theme_text_color
Tff7b72from T7ee787jnius Tff7b72import Te6edf3autoclass
Te6edf3BluetoothAdapter Tff7b72= Te6edf3autoclassTb4b4b4(Ta5d6ff'Ta5d6ffandroid.bluetooth.BluetoothAdapterTa5d6ff'Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72from T7ee787.T7ee787helpers Tff7b72import Te6edf3dark_theme_text_color


Tff7b72class T56d364HardwareTb4b4b4(Tb4b4b4)Tb4b4b4:

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffkeys_screen Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_ready Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_modem_ready Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_serial_ready Tff7b72= Tff7b72False

Tff7b72selfTff7b72.Td2a8ffno_transition Tff7b72= Te6edf3NoTransitionTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffslide_transition Tff7b72= Te6edf3SlideTransitionTb4b4b4(Tb4b4b4)

Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffhardware_readyTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffhas_screenTb4b4b4(Ta5d6ff"Ta5d6ffhardware_screenTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_screen Tff7b72= Te6edf3BuilderTff7b72.Td2a8ffload_stringTb4b4b4(Te6edf3layout_hardware_screenTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_screenTff7b72.Td2a8ffapp Tff7b72= Tff7b72self
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_screenTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhardware_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_scrollviewTff7b72.Td2a8ffeffect_cls Tff7b72= Te6edf3ScrollEffect

Tff7b72def Td2a8ffcon_hide_settingsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffwidget_hideTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_buttonTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffwidget_hideTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_buttonTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffwidget_hideTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_buttonTb4b4b4)

Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffget_platformTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffandroidTa5d6ff"Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffgetpersistentTb4b4b4(Ta5d6ff"Ta5d6ffservice.is_controlling_connectivityTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3info Tff7b72= Ta5d6ff"Ta5d6ffSideband is connected via a shared Reticulum instance running on this system.Tffea00\nTffea00\nTa5d6ff"
Te6edf3info Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ffTo configure hardware parameters, edit the relevant configuration file for the instance.Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffhardware_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_infoTff7b72.Td2a8fftext Tff7b72= Te6edf3info
Te6edf3con_hide_settingsTb4b4b4(Tb4b4b4)

Tff7b72elseTb4b4b4:
Te6edf3info Tff7b72= Ta5d6ff"Ta5d6ffWhen using external hardware for communicating, you may configure various parameters, such as channel settings, modulation schemes, interface speeds and access parameters. You can set up these parameters per device type, and Sideband will apply the configuration when opening a device of that type.Tffea00\nTffea00\nTa5d6ff"
Te6edf3info Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ffHardware configurations can also be exported or imported as [i]config motes[/i], which are self-contained plaintext strings that are easy to share with others. When importing a config mote, Sideband will automatically set all relevant parameters as specified within it.Tffea00\nTffea00\nTa5d6ff"
Te6edf3info Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ffFor changes to hardware parameters to take effect, you must shut down and restart Sideband.Tffea00\nTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffhardware_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_infoTff7b72.Td2a8fftext Tff7b72= Te6edf3info

Tff7b72elseTb4b4b4:
Te6edf3info Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffreticulumTff7b72.Td2a8ffis_connected_to_shared_instanceTb4b4b4:
Te6edf3info Tff7b72= Ta5d6ff"Ta5d6ffSideband is connected via a shared Reticulum instance running on this system.Tffea00\nTffea00\nTa5d6ff"
Te6edf3info Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ffTo configure hardware parameters, edit the configuration file located at:Tffea00\nTffea00\nTa5d6ff"
Tff7b72if Tff7b72not Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_windowsTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3info Tff7b72+Tff7b72= Tffa657strTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffconfigpathTb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3info Tff7b72+Tff7b72= Tffa657strTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffconfigpathTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4, Ta5d6ff"Tffea00\\Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3info Tff7b72= Ta5d6ff"Ta5d6ffSideband is currently running a standalone or master Reticulum instance on this system.Tffea00\nTffea00\nTa5d6ff"
Te6edf3info Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ffTo configure hardware parameters, edit the configuration file located at:Tffea00\nTffea00\nTa5d6ff"
Tff7b72if Tff7b72not Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_windowsTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3info Tff7b72+Tff7b72= Tffa657strTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffconfigpathTb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3info Tff7b72+Tff7b72= Tffa657strTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffconfigpathTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4, Ta5d6ff"Tffea00\\Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhardware_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_infoTff7b72.Td2a8fftext Tff7b72= Te6edf3info

Te6edf3con_hide_settingsTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffhardware_ready Tff7b72= Tff7b72True

T8b949e## RNode hardware screen
Tff7b72def Td2a8ffhardware_rnode_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3directionTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_rnode_readyTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_openTb4b4b4(Te6edf3directionTff7b72=Te6edf3directionTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffloader_actionTb4b4b4(Te6edf3directionTff7b72=Te6edf3directionTb4b4b4)
Tff7b72def Td2a8fffinalTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_initTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffoTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_openTb4b4b4(Te6edf3no_transitionTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3oTb4b4b4, Te6edf3ll_otTb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3finalTb4b4b4, Te6edf3ll_ftTb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_openTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3directionTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4, Te6edf3no_transitionTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3no_transitionTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransition Tff7b72= Tff7b72selfTff7b72.Td2a8ffno_transition
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransition Tff7b72= Tff7b72selfTff7b72.Td2a8ffslide_transition
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransitionTff7b72.Td2a8ffdirection Tff7b72= Te6edf3direction

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransitionTff7b72.Td2a8ffdirection Tff7b72= Ta5d6ff"Ta5d6ffleftTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffcurrent Tff7b72= Ta5d6ff"Ta5d6ffhardware_rnode_screenTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffnav_drawerTff7b72.Td2a8ffset_stateTb4b4b4(Ta5d6ff"Ta5d6ffclosedTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsetstateTb4b4b4(Ta5d6ff"Ta5d6ffapp.displayingTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffcurrentTb4b4b4)

Tff7b72if Te6edf3no_transitionTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransition Tff7b72= Tff7b72selfTff7b72.Td2a8ffslide_transition

Tff7b72def Td2a8ffhardware_rnode_saveTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_frequencyTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tffa657floatTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_frequencyTff7b72.Td2a8fftextTb4b4b4)Tff7b72*T79c0ff1000000Tb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72pass

Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bandwidthTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tffa657floatTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bandwidthTff7b72.Td2a8fftextTb4b4b4)Tff7b72*T79c0ff1000Tb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72pass

Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tx_powerTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_txpowerTff7b72.Td2a8fftextTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72pass

Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_spreading_factorTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_spreadingfactorTff7b72.Td2a8fftextTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72pass
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_coding_rateTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_codingrateTff7b72.Td2a8fftextTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72pass
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_atl_shortTa5d6ff"Tb4b4b4] Tff7b72= Tffa657floatTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_atl_shortTff7b72.Td2a8fftextTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_atl_shortTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72None

Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_atl_longTa5d6ff"Tb4b4b4] Tff7b72= Tffa657floatTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_atl_longTff7b72.Td2a8fftextTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_atl_longTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72None
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8fftext Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_beaconintervalTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72None
Tff7b72elseTb4b4b4:
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_beaconintervalTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8fftextTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72pass

Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beacondataTff7b72.Td2a8fftext Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_beacondataTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72None
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_beacondataTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beacondataTff7b72.Td2a8fftext

Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_deviceTff7b72.Td2a8fftext Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bt_deviceTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72None
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bt_deviceTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_deviceTff7b72.Td2a8fftext

Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_tcp_hostTff7b72.Td2a8fftext Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tcp_hostTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72None
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tcp_hostTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_tcp_hostTff7b72.Td2a8fftext

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsave_configurationTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_scan_jobTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff1.25Tb4b4b4)
Te6edf3added_devices Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3scan_timeout Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72+T79c0ff16
Tff7b72def Td2a8ffjobTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_scan_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_scan_buttonTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ffScanning...Ta5d6ff"
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3jobTb4b4b4, T79c0ff0.2Tb4b4b4)
Tff7b72while Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72< Te6edf3scan_timeoutTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffScanning...Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72for Te6edf3device_addr Tff7b72in Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdiscovered_bt_devicesTb4b4b4:
Tff7b72if Te6edf3device_addr Tff7b72not Tff7b72in Te6edf3added_devices Tff7b72and Tff7b72not Te6edf3device_addr Tff7b72in Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffbt_bonded_devicesTb4b4b4:
Te6edf3new_device Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdiscovered_bt_devicesTb4b4b4[Te6edf3device_addrTb4b4b4]
Te6edf3added_devicesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3device_addrTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAdding device: Tffd700{Te6edf3new_deviceTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ffadd_factoryTb4b4b4(Te6edf3add_deviceTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffadd_jobTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Te6edf3pair_addr Tff7b72= Te6edf3add_deviceTb4b4b4[Ta5d6ff"Ta5d6ffaddressTa5d6ff"Tb4b4b4]
Te6edf3btn_text Tff7b72= Ta5d6ff"Ta5d6ffPair Ta5d6ff"Tff7b72+Te6edf3add_deviceTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]
Tff7b72def Td2a8ffrun_pairTb4b4b4(Te6edf3senderTb4b4b4)Tb4b4b4:
Te6edf3pair_result Tff7b72= Tff7b72selfTff7b72.Td2a8ffhardware_rnode_pair_device_actionTb4b4b4(Te6edf3pair_addrTb4b4b4)
Tff7b72if Te6edf3pair_result Tff7b72!= Ta5d6ff"Ta5d6ffalready_pairedTa5d6ff"Tb4b4b4:
Tff7b72def Td2a8ffjobTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffhardware_rnode_pair_check_jobTb4b4b4(Te6edf3pair_addrTb4b4b4, Te6edf3add_deviceTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Te6edf3device_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Te6edf3btn_textTb4b4b4, Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff16Tb4b4b4)Tb4b4b4, Te6edf3paddingTff7b72=Tb4b4b4[Te6edf3dpTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4, Te6edf3dpTb4b4b4(T79c0ff14Tb4b4b4)Tb4b4b4, Te6edf3dpTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4, Te6edf3dpTb4b4b4(T79c0ff14Tb4b4b4)Tb4b4b4]Tb4b4b4, Te6edf3size_hintTff7b72=Tb4b4b4[T79c0ff1.0Tb4b4b4, Tff7b72NoneTb4b4b4]Tb4b4b4)
Te6edf3device_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3run_pairTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffrnode_scan_resultsTff7b72.Td2a8ffadd_widgetTb4b4b4(Te6edf3device_buttonTb4b4b4)
Tff7b72return Te6edf3add_job
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3add_factoryTb4b4b4(Te6edf3new_deviceTb4b4b4)Tb4b4b4, T79c0ff0.1Tb4b4b4)

Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff2Tb4b4b4)

Tff7b72def Td2a8ffjobTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_scan_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_scan_buttonTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ffPair New DeviceTa5d6ff"
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3jobTb4b4b4, T79c0ff0.2Tb4b4b4)

Tff7b72if Tffa657lenTb4b4b4(Te6edf3added_devicesTb4b4b4) Tff7b72== T79c0ff0Tb4b4b4:
Tff7b72def Td2a8ffjobTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4: Te6edf3toastTb4b4b4(Ta5d6ff"Ta5d6ffNo unpaired RNodes discoveredTa5d6ff"Tb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3jobTb4b4b4, T79c0ff0.2Tb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_pair_check_jobTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3pair_addrTb4b4b4, Te6edf3device_nameTb4b4b4)Tb4b4b4:
Te6edf3timeout Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72+T79c0ff45
Te6edf3pairing_confirmed Tff7b72= Tff7b72False
Tff7b72while Tff7b72not Te6edf3pairing_confirmed Tff7b72and Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72< Te6edf3timeoutTb4b4b4:
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff2Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffbluetooth_update_bonded_devicesTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3pair_addr Tff7b72in Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffbt_bonded_devicesTb4b4b4:
Te6edf3pairing_confirmed Tff7b72= Tff7b72True
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffPairing with Tffd700{Te6edf3device_nameTffd700}Ta5d6ff (Tffd700{Te6edf3pair_addrTffd700}Ta5d6ff) successfulTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Tff7b72def Td2a8ffjobTb4b4b4(Te6edf3dtTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4: Te6edf3toastTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffPaired with Tffd700{Te6edf3device_nameTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3jobTb4b4b4, T79c0ff0.2Tb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_pair_device_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3pair_addrTb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffPair action for Tffd700{Te6edf3pair_addrTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffstop_bluetooth_scanTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3pair_addr Tff7b72in Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffbt_bonded_devicesTb4b4b4:
Tff7b72def Td2a8ffjobTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4: Te6edf3toastTb4b4b4(Ta5d6ff"Ta5d6ffSelected device already pairedTa5d6ff"Tb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3jobTb4b4b4, T79c0ff0.1Tb4b4b4)
Tff7b72return Ta5d6ff"Ta5d6ffalready_pairedTa5d6ff"

Tff7b72elseTb4b4b4:
Te6edf3BluetoothSocket Tff7b72= Te6edf3autoclassTb4b4b4(Ta5d6ff'Ta5d6ffandroid.bluetooth.BluetoothSocketTa5d6ff'Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffbt_adapter Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffbt_adapter Tff7b72= Te6edf3BluetoothAdapterTff7b72.Td2a8ffgetDefaultAdapterTb4b4b4(Tb4b4b4)
Te6edf3addr_bytes Tff7b72= Tffa657bytesTff7b72.Td2a8fffromhexTb4b4b4(Te6edf3pair_addrTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff:Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3remote_device Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffbt_adapterTff7b72.Td2a8ffgetRemoteDeviceTb4b4b4(Te6edf3addr_bytesTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffRemote device: Tffd700{Te6edf3remote_deviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Te6edf3remote_deviceTff7b72.Td2a8ffcreateBondTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_bt_scan_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffdiscovered_bt_devices Tff7b72= Tb4b4b4{Tb4b4b4}
Te6edf3rw Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3child Tff7b72in Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffrnode_scan_resultsTff7b72.Td2a8ffchildrenTb4b4b4: Te6edf3rwTff7b72.Td2a8ffappendTb4b4b4(Te6edf3childTb4b4b4)
Tff7b72for Te6edf3w Tff7b72in Te6edf3rwTb4b4b4: Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffrnode_scan_resultsTff7b72.Td2a8ffremove_widgetTb4b4b4(Te6edf3wTb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffbluetooth_scan_actionTb4b4b4, T79c0ff0.5Tb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_bt_on_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_pair_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_on_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_off_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72def Td2a8ffre_enableTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff2Tb4b4b4)
Tff7b72while Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffgetstateTb4b4b4(Ta5d6ff"Ta5d6ffexecuting.bt_onTa5d6ff"Tb4b4b4)Tb4b4b4: Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_off_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_pair_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_on_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3re_enableTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsetstateTb4b4b4(Ta5d6ff"Ta5d6ffwants.bt_onTa5d6ff"Tb4b4b4, Tff7b72TrueTb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_bt_off_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_pair_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_on_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_off_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72def Td2a8ffre_enableTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff2Tb4b4b4)
Tff7b72while Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffgetstateTb4b4b4(Ta5d6ff"Ta5d6ffexecuting.bt_offTa5d6ff"Tb4b4b4)Tb4b4b4: Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_off_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_pair_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_on_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3re_enableTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsetstateTb4b4b4(Ta5d6ff"Ta5d6ffwants.bt_offTa5d6ff"Tb4b4b4, Tff7b72TrueTb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_bt_pair_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_pair_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_on_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_off_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72def Td2a8ffre_enableTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff2Tb4b4b4)
Tff7b72while Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffgetstateTb4b4b4(Ta5d6ff"Ta5d6ffexecuting.bt_pairTa5d6ff"Tb4b4b4)Tb4b4b4: Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_off_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_pair_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_on_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3re_enableTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsetstateTb4b4b4(Ta5d6ff"Ta5d6ffwants.bt_pairTa5d6ff"Tb4b4b4, Tff7b72TrueTb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_bt_toggle_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3eventTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3senderTff7b72.Td2a8ffactiveTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bluetoothTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrequest_bluetooth_permissionsTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bluetoothTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72False

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsave_configurationTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffhardware_rnode_ble_toggle_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3eventTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3senderTff7b72.Td2a8ffactiveTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bleTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrequest_bluetooth_permissionsTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bleTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72False

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsave_configurationTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffhardware_rnode_framebuffer_toggle_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3eventTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3senderTff7b72.Td2a8ffactiveTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_enable_framebufferTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_enable_framebufferTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72False

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsave_configurationTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffhardware_rnode_tcp_toggle_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3eventTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3senderTff7b72.Td2a8ffactiveTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tcpTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tcpTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72False

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsave_configurationTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffrefresh_rnode_parametersTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffGetting RNode configuration parametersTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72tryTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_frequencyTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_freq Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_frequencyTa5d6ff"Tb4b4b4]Tff7b72/T79c0ff1000000.0Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_freq Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bandwidthTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_bw Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bandwidthTa5d6ff"Tb4b4b4]Tff7b72/T79c0ff1000.0Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_bw Tff7b72= Tffa657strTb4b4b4(T79c0ff62.5Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tx_powerTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_p Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tx_powerTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_p Tff7b72= Tffa657strTb4b4b4(T79c0ff0Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_spreading_factorTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_sf Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_spreading_factorTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_sf Tff7b72= Tffa657strTb4b4b4(T79c0ff8Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_coding_rateTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_cr Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_coding_rateTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_cr Tff7b72= Tffa657strTb4b4b4(T79c0ff6Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_beaconintervalTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_bi Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_beaconintervalTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_bi Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_beacondataTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_bd Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_beacondataTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_bd Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bt_deviceTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_btd Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bt_deviceTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_btd Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tcp_hostTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_th Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tcp_hostTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_th Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_atl_shortTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_ats Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_atl_shortTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_ats Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_atl_longTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3t_atl Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_atl_longTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3t_atl Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bluetoothTff7b72.Td2a8ffactive Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bluetoothTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bleTff7b72.Td2a8ffactive Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bleTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_tcpTff7b72.Td2a8ffactive Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tcpTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_framebufferTff7b72.Td2a8ffactive Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_enable_framebufferTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_frequencyTff7b72.Td2a8fftext Tff7b72= Te6edf3t_freq
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bandwidthTff7b72.Td2a8fftext Tff7b72= Te6edf3t_bw
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_txpowerTff7b72.Td2a8fftext Tff7b72= Te6edf3t_p
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_spreadingfactorTff7b72.Td2a8fftext Tff7b72= Te6edf3t_sf
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_codingrateTff7b72.Td2a8fftext Tff7b72= Te6edf3t_cr
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8fftext Tff7b72= Te6edf3t_bi
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beacondataTff7b72.Td2a8fftext Tff7b72= Te6edf3t_bd
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_deviceTff7b72.Td2a8fftext Tff7b72= Te6edf3t_btd
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_tcp_hostTff7b72.Td2a8fftext Tff7b72= Te6edf3t_th
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_atl_shortTff7b72.Td2a8fftext Tff7b72= Te6edf3t_ats
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_atl_longTff7b72.Td2a8fftext Tff7b72= Te6edf3t_atl

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4: Te6edf3RNSTff7b72.Td2a8fftrace_exceptionTb4b4b4(Te6edf3eTb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_initTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffhardware_rnode_readyTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffhas_screenTb4b4b4(Ta5d6ff"Ta5d6ffhardware_rnode_screenTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screen Tff7b72= Te6edf3BuilderTff7b72.Td2a8ffload_stringTb4b4b4(Te6edf3layout_hardware_rnode_screenTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffapp Tff7b72= Tff7b72self
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_scrollviewTff7b72.Td2a8ffeffect_cls Tff7b72= Te6edf3ScrollEffect
Tff7b72def Td2a8ffsave_connectivityTb4b4b4(Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3eventTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_rnode_validateTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_saveTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8fffocus_saveTb4b4b4(Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3eventTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3sender Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Tff7b72not Te6edf3senderTff7b72.Td2a8fffocusTb4b4b4:
Te6edf3save_connectivityTb4b4b4(Te6edf3senderTff7b72=Te6edf3senderTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffrefresh_rnode_parametersTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_frequencyTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bandwidthTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_txpowerTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_spreadingfactorTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_codingrateTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beacondataTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bt_deviceTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_tcp_hostTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_frequencyTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bandwidthTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_txpowerTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_spreadingfactorTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_codingrateTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beacondataTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_atl_shortTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_atl_longTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bluetoothTff7b72.Td2a8ffbindTb4b4b4(Te6edf3activeTff7b72=Tff7b72selfTff7b72.Td2a8ffhardware_rnode_bt_toggle_actionTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bleTff7b72.Td2a8ffbindTb4b4b4(Te6edf3activeTff7b72=Tff7b72selfTff7b72.Td2a8ffhardware_rnode_ble_toggle_actionTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_framebufferTff7b72.Td2a8ffbindTb4b4b4(Te6edf3activeTff7b72=Tff7b72selfTff7b72.Td2a8ffhardware_rnode_framebuffer_toggle_actionTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_tcpTff7b72.Td2a8ffbindTb4b4b4(Te6edf3activeTff7b72=Tff7b72selfTff7b72.Td2a8ffhardware_rnode_tcp_toggle_actionTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhardware_rnode_ready Tff7b72= Tff7b72True

Tff7b72def Td2a8ffhardware_rnode_validateTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3valid Tff7b72= Tff7b72True
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657floatTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_frequencyTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Te6edf3val Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid frequencyTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_frequencyTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_frequencyTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_frequencyTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3valid_vals Tff7b72= Tb4b4b4[T79c0ff7.8Tb4b4b4, T79c0ff10.4Tb4b4b4, T79c0ff15.6Tb4b4b4, T79c0ff20.8Tb4b4b4, T79c0ff31.25Tb4b4b4, T79c0ff41.7Tb4b4b4, T79c0ff62.5Tb4b4b4, T79c0ff125Tb4b4b4, T79c0ff250Tb4b4b4, T79c0ff500Tb4b4b4, T79c0ff203.125Tb4b4b4, T79c0ff406.25Tb4b4b4, T79c0ff812.5Tb4b4b4, T79c0ff1625Tb4b4b4]
Te6edf3val Tff7b72= Tffa657floatTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bandwidthTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Te6edf3val Tff7b72in Te6edf3valid_valsTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid bandwidthTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bandwidthTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bandwidthTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bandwidthTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_txpowerTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Te6edf3val Tff7b72>Tff7b72= T79c0ff0Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid TX powerTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_txpowerTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_txpowerTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_txpowerTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_spreadingfactorTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Te6edf3val Tff7b72< T79c0ff7 Tff7b72or Te6edf3val Tff7b72> T79c0ff12Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid sfTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_spreadingfactorTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_spreadingfactorTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_spreadingfactorTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_codingrateTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Te6edf3val Tff7b72< T79c0ff5 Tff7b72or Te6edf3val Tff7b72> T79c0ff8Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid crTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_codingrateTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_codingrateTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_codingrateTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8fftext Tff7b72!= Ta5d6ff"Ta5d6ff"Tb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Te6edf3val Tff7b72< T79c0ff10Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid beacon intervalTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72return Te6edf3valid

Tff7b72def Td2a8ffhardware_rnode_importTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3mote Tff7b72= Tff7b72None
Tff7b72tryTb4b4b4:
Te6edf3mote Tff7b72= Te6edf3ClipboardTff7b72.Td2a8ffpasteTb4b4b4(Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3yes_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffImport FailedTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffCould not read data from your clipboard, please check your system permissions.Ta5d6ff"Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3yes_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_yesTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3yes_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_yesTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72tryTb4b4b4:
Te6edf3config Tff7b72= Te6edf3msgpackTff7b72.Td2a8ffunpackbTb4b4b4(Te6edf3base64Tff7b72.Td2a8ffb32decodeTb4b4b4(Te6edf3moteTb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_frequencyTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6fffTa5d6ff"Tb4b4b4]Tff7b72/T79c0ff1000000.0Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_bandwidthTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4]Tff7b72/T79c0ff1000.0Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_txpowerTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6fftTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_spreadingfactorTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffsTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_codingrateTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffcTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffnTa5d6ff" Tff7b72in Te6edf3config Tff7b72and Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffnTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3ifn Tff7b72= Tffa657strTb4b4b4(Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffnTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3ifn Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Ta5d6ff"Ta5d6ffpTa5d6ff" Tff7b72in Te6edf3config Tff7b72and Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffpTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3ifp Tff7b72= Tffa657strTb4b4b4(Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffpTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3ifp Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconnectivity_screen Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconnectivity_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffconnectivity_rnode_ifac_netnameTff7b72.Td2a8fftext Tff7b72= Te6edf3ifn
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconnectivity_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffconnectivity_rnode_ifac_passphraseTff7b72.Td2a8fftext Tff7b72= Te6edf3ifp
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffconnect_rnode_ifac_netnameTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifn
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffconnect_rnode_ifac_passphraseTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifp

Tff7b72if Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffiTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3ti Tff7b72= Tffa657strTb4b4b4(Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffiTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3ti Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beaconintervalTff7b72.Td2a8fftext Tff7b72= Te6edf3ti
Tff7b72if Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffdTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3td Tff7b72= Tffa657strTb4b4b4(Te6edf3configTb4b4b4[Ta5d6ff"Ta5d6ffdTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3td Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_rnode_beacondataTff7b72.Td2a8fftext Tff7b72= Te6edf3td

Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_rnode_validateTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_rnode_saveTb4b4b4(Tb4b4b4)
Te6edf3yes_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffConfiguration ImportedTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffThe config mote was imported and saved as your active configuration.Ta5d6ff"Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3yes_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_yesTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3yes_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_yesTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid moteTa5d6ff"Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3yes_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffImport FailedTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffThe read data did not contain a valid config mote. If any data was decoded, you may try to correct it by editing the relevant fields. The reported error was:Tffea00\nTffea00\nTa5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3yes_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_yesTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3yes_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_yesTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffhardware_rnode_exportTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3mote Tff7b72= Tff7b72None
Tff7b72tryTb4b4b4:
Te6edf3mote Tff7b72= Te6edf3base64Tff7b72.Td2a8ffb32encodeTb4b4b4(Te6edf3msgpackTff7b72.Td2a8ffpackbTb4b4b4(Tb4b4b4{
Ta5d6ff"Ta5d6fffTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_frequencyTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_bandwidthTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_tx_powerTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffsTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_spreading_factorTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffcTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_coding_rateTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffiTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_beaconintervalTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffdTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_rnode_beacondataTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffnTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffconnect_rnode_ifac_netnameTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffpTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffconnect_rnode_ifac_passphraseTa5d6ff"Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fftrace_exceptionTb4b4b4(Te6edf3eTb4b4b4)

Tff7b72if Te6edf3mote Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3ClipboardTff7b72.Td2a8ffcopyTb4b4b4(Te6edf3moteTb4b4b4)
Te6edf3yes_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffConfiguration ExportedTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffThe config mote was created and copied to your clipboard.Ta5d6ff"Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3yes_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_yesTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3yes_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_yesTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3yes_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3MDDialogTb4b4b4(
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffExport FailedTa5d6ff"Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffThe config mote could not be created, please check your settings.Ta5d6ff"Tb4b4b4,
Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3yes_button Tb4b4b4]Tb4b4b4,
T8b949e# elevation=0,
Tb4b4b4)
Tff7b72def Td2a8ffdl_yesTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Te6edf3dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3yes_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_yesTb4b4b4)
Te6edf3dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)
T8b949e## Modem hardware screen
Tff7b72def Td2a8ffhardware_modem_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3directionTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_modem_readyTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_openTb4b4b4(Te6edf3directionTff7b72=Te6edf3directionTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffloader_actionTb4b4b4(Te6edf3directionTff7b72=Te6edf3directionTb4b4b4)
Tff7b72def Td2a8fffinalTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_initTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffoTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_openTb4b4b4(Te6edf3no_transitionTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3oTb4b4b4, Te6edf3ll_otTb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3finalTb4b4b4, Te6edf3ll_ftTb4b4b4)

Tff7b72def Td2a8ffhardware_modem_openTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3directionTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4, Te6edf3no_transitionTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3no_transitionTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransition Tff7b72= Tff7b72selfTff7b72.Td2a8ffno_transition
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransition Tff7b72= Tff7b72selfTff7b72.Td2a8ffslide_transition
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransitionTff7b72.Td2a8ffdirection Tff7b72= Te6edf3direction

Tff7b72selfTff7b72.Td2a8ffhardware_modem_initTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransitionTff7b72.Td2a8ffdirection Tff7b72= Ta5d6ff"Ta5d6ffleftTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffcurrent Tff7b72= Ta5d6ff"Ta5d6ffhardware_modem_screenTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffnav_drawerTff7b72.Td2a8ffset_stateTb4b4b4(Ta5d6ff"Ta5d6ffclosedTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsetstateTb4b4b4(Ta5d6ff"Ta5d6ffapp.displayingTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffcurrentTb4b4b4)

Tff7b72if Te6edf3no_transitionTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransition Tff7b72= Tff7b72selfTff7b72.Td2a8ffslide_transition

Tff7b72def Td2a8ffhardware_modem_initTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffhardware_modem_readyTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffhas_screenTb4b4b4(Ta5d6ff"Ta5d6ffhardware_modem_screenTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screen Tff7b72= Te6edf3BuilderTff7b72.Td2a8ffload_stringTb4b4b4(Te6edf3layout_hardware_modem_screenTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffapp Tff7b72= Tff7b72self
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_scrollviewTff7b72.Td2a8ffeffect_cls Tff7b72= Te6edf3ScrollEffect
Tff7b72def Td2a8ffsave_connectivityTb4b4b4(Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3eventTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_modem_validateTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_saveTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8fffocus_saveTb4b4b4(Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3eventTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3sender Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Tff7b72not Te6edf3senderTff7b72.Td2a8fffocusTb4b4b4:
Te6edf3save_connectivityTb4b4b4(Te6edf3senderTff7b72=Te6edf3senderTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_baudrateTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_b Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_baudrateTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_b Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_databitsTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_db Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_databitsTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_db Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_parityTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_p Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_parityTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_p Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_stopbitsTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_sb Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_stopbitsTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_sb Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_preambleTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_pa Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_preambleTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_pa Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_tailTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_t Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_tailTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_t Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_persistenceTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_ps Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_persistenceTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_ps Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_slottimeTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_st Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_slottimeTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_st Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_beaconintervalTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_bi Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_beaconintervalTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_bi Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_beacondataTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_bd Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_beacondataTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_bd Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_baudrateTff7b72.Td2a8fftext Tff7b72= Te6edf3t_b
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_databitsTff7b72.Td2a8fftext Tff7b72= Te6edf3t_db
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_parityTff7b72.Td2a8fftext Tff7b72= Te6edf3t_p
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_stopbitsTff7b72.Td2a8fftext Tff7b72= Te6edf3t_sb
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beaconintervalTff7b72.Td2a8fftext Tff7b72= Te6edf3t_bi
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beacondataTff7b72.Td2a8fftext Tff7b72= Te6edf3t_bd
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_preambleTff7b72.Td2a8fftext Tff7b72= Te6edf3t_pa
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_tailTff7b72.Td2a8fftext Tff7b72= Te6edf3t_t
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_persistenceTff7b72.Td2a8fftext Tff7b72= Te6edf3t_ps
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_slottimeTff7b72.Td2a8fftext Tff7b72= Te6edf3t_st
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_baudrateTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_databitsTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_parityTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_stopbitsTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beaconintervalTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beacondataTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_preambleTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_tailTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_persistenceTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_slottimeTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_baudrateTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_databitsTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_parityTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_stopbitsTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beaconintervalTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beacondataTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_preambleTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_tailTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_persistenceTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_slottimeTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhardware_modem_ready Tff7b72= Tff7b72True
Tff7b72def Td2a8ffhardware_modem_saveTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_baudrateTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_baudrateTff7b72.Td2a8fftextTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_databitsTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_databitsTff7b72.Td2a8fftextTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_parityTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_parityTff7b72.Td2a8fftext
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_stopbitsTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_stopbitsTff7b72.Td2a8fftextTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_preambleTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_preambleTff7b72.Td2a8fftextTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_tailTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_tailTff7b72.Td2a8fftextTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_persistenceTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_persistenceTff7b72.Td2a8fftextTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_slottimeTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_slottimeTff7b72.Td2a8fftextTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beaconintervalTff7b72.Td2a8fftext Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_beaconintervalTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72None
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_beaconintervalTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beaconintervalTff7b72.Td2a8fftextTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beacondataTff7b72.Td2a8fftext Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_beacondataTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72None
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_modem_beacondataTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beacondataTff7b72.Td2a8fftext

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsave_configurationTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffhardware_modem_validateTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3valid Tff7b72= Tff7b72True
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_baudrateTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Te6edf3val Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid baudrateTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_baudrateTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_baudrateTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_baudrateTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_databitsTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Te6edf3val Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid databitsTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_databitsTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_databitsTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_databitsTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_stopbitsTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Te6edf3val Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid stopbitsTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_stopbitsTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_stopbitsTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_stopbitsTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_preambleTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Tb4b4b4(Te6edf3val Tff7b72>Tff7b72= T79c0ff0 Tff7b72and Te6edf3val Tff7b72<Tff7b72= T79c0ff1000Tb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid preambleTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_preambleTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_preambleTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_preambleTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_tailTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Tb4b4b4(Te6edf3val Tff7b72> T79c0ff0 Tff7b72and Te6edf3val Tff7b72<Tff7b72= T79c0ff500Tb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid tailTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_tailTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_tailTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_tailTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_slottimeTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Tb4b4b4(Te6edf3val Tff7b72> T79c0ff0 Tff7b72and Te6edf3val Tff7b72<Tff7b72= T79c0ff500Tb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid slottimeTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_slottimeTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_slottimeTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_slottimeTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_persistenceTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Tb4b4b4(Te6edf3val Tff7b72> T79c0ff0 Tff7b72and Te6edf3val Tff7b72<Tff7b72= T79c0ff255Tb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid persistenceTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_persistenceTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_persistenceTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_persistenceTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_parityTff7b72.Td2a8fftext
Te6edf3nval Tff7b72= Te6edf3valTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3nval Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffevTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffeveTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffevenTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3val Tff7b72= Ta5d6ff"Ta5d6ffevenTa5d6ff"
Tff7b72if Te6edf3nval Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffoTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffodTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffoddTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3val Tff7b72= Ta5d6ff"Ta5d6ffoddTa5d6ff"
Tff7b72if Te6edf3nval Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffnTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnoneTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnotTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnullTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3val Tff7b72= Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Tff7b72if Tff7b72not Te6edf3val Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffevenTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffoddTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnoneTa5d6ff"Tb4b4b4]Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid parityTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_parityTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_parityTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_parityTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False

Tff7b72tryTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beaconintervalTff7b72.Td2a8fftext Tff7b72!= Ta5d6ff"Ta5d6ff"Tb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beaconintervalTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Te6edf3val Tff7b72< T79c0ff10Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid biTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beaconintervalTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beaconintervalTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_modem_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_modem_beaconintervalTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3valid Tff7b72= Tff7b72False

Tff7b72return Te6edf3valid
T8b949e## Serial hardware screen
Tff7b72def Td2a8ffhardware_serial_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3directionTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_serial_readyTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_serial_openTb4b4b4(Te6edf3directionTff7b72=Te6edf3directionTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffloader_actionTb4b4b4(Te6edf3directionTff7b72=Te6edf3directionTb4b4b4)
Tff7b72def Td2a8fffinalTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_serial_initTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffoTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_serial_openTb4b4b4(Te6edf3no_transitionTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3oTb4b4b4, Te6edf3ll_otTb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3finalTb4b4b4, Te6edf3ll_ftTb4b4b4)

Tff7b72def Td2a8ffhardware_serial_openTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3directionTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4, Te6edf3no_transitionTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3no_transitionTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransition Tff7b72= Tff7b72selfTff7b72.Td2a8ffno_transition
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransition Tff7b72= Tff7b72selfTff7b72.Td2a8ffslide_transition
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransitionTff7b72.Td2a8ffdirection Tff7b72= Te6edf3direction

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransitionTff7b72.Td2a8ffdirection Tff7b72= Ta5d6ff"Ta5d6ffleftTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffcurrent Tff7b72= Ta5d6ff"Ta5d6ffhardware_serial_screenTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffnav_drawerTff7b72.Td2a8ffset_stateTb4b4b4(Ta5d6ff"Ta5d6ffclosedTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsetstateTb4b4b4(Ta5d6ff"Ta5d6ffapp.displayingTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffcurrentTb4b4b4)

Tff7b72if Te6edf3no_transitionTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8fftransition Tff7b72= Tff7b72selfTff7b72.Td2a8ffslide_transition

Tff7b72def Td2a8ffhardware_serial_initTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffhardware_serial_readyTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffhas_screenTb4b4b4(Ta5d6ff"Ta5d6ffhardware_serial_screenTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screen Tff7b72= Te6edf3BuilderTff7b72.Td2a8ffload_stringTb4b4b4(Te6edf3layout_hardware_serial_screenTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffapp Tff7b72= Tff7b72self
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_scrollviewTff7b72.Td2a8ffeffect_cls Tff7b72= Te6edf3ScrollEffect
Tff7b72def Td2a8ffsave_connectivityTb4b4b4(Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3eventTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffhardware_serial_validateTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_serial_saveTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8fffocus_saveTb4b4b4(Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3eventTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3sender Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Tff7b72not Te6edf3senderTff7b72.Td2a8fffocusTb4b4b4:
Te6edf3save_connectivityTb4b4b4(Te6edf3senderTff7b72=Te6edf3senderTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_baudrateTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_b Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_baudrateTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_b Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_databitsTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_db Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_databitsTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_db Tff7b72= Ta5d6ff"Ta5d6ff"

Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_parityTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_p Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_parityTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_p Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_stopbitsTa5d6ff"Tb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3t_sb Tff7b72= Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_stopbitsTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3t_sb Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_baudrateTff7b72.Td2a8fftext Tff7b72= Te6edf3t_b
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_databitsTff7b72.Td2a8fftext Tff7b72= Te6edf3t_db
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_parityTff7b72.Td2a8fftext Tff7b72= Te6edf3t_p
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_stopbitsTff7b72.Td2a8fftext Tff7b72= Te6edf3t_sb
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_baudrateTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_databitsTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_parityTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_stopbitsTff7b72.Td2a8ffbindTb4b4b4(Te6edf3focusTff7b72=Te6edf3focus_saveTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_baudrateTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_databitsTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_parityTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_stopbitsTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_text_validateTff7b72=Te6edf3save_connectivityTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhardware_serial_ready Tff7b72= Tff7b72True

Tff7b72def Td2a8ffhardware_serial_validateTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3valid Tff7b72= Tff7b72True
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_baudrateTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Te6edf3val Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid baudrateTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_baudrateTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_baudrateTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_baudrateTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_databitsTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Te6edf3val Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid databitsTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_databitsTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_databitsTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_databitsTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_stopbitsTff7b72.Td2a8fftextTb4b4b4)
Tff7b72if Tff7b72not Te6edf3val Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid stopbitsTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_stopbitsTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_stopbitsTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_stopbitsTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3val Tff7b72= Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_parityTff7b72.Td2a8fftext
Te6edf3nval Tff7b72= Te6edf3valTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3nval Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffevTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffeveTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffevenTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3val Tff7b72= Ta5d6ff"Ta5d6ffevenTa5d6ff"
Tff7b72if Te6edf3nval Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffoTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffodTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffoddTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3val Tff7b72= Ta5d6ff"Ta5d6ffoddTa5d6ff"
Tff7b72if Te6edf3nval Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffnTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnoneTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnotTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnullTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3val Tff7b72= Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Tff7b72if Tff7b72not Te6edf3val Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffevenTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffoddTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnoneTa5d6ff"Tb4b4b4]Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffInvalid parityTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_parityTff7b72.Td2a8fferror Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_parityTff7b72.Td2a8fftext Tff7b72= Tffa657strTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_parityTff7b72.Td2a8fferror Tff7b72= Tff7b72True
Te6edf3valid Tff7b72= Tff7b72False

Tff7b72return Te6edf3valid

Tff7b72def Td2a8ffhardware_serial_saveTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_baudrateTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_baudrateTff7b72.Td2a8fftextTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_databitsTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_databitsTff7b72.Td2a8fftextTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_parityTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_parityTff7b72.Td2a8fftext
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6ffhw_serial_stopbitsTa5d6ff"Tb4b4b4] Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhardware_serial_screenTff7b72.Td2a8ffidsTff7b72.Td2a8ffhardware_serial_stopbitsTff7b72.Td2a8fftextTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsave_configurationTb4b4b4(Tb4b4b4)

Te6edf3layout_hardware_screen Tff7b72= Ta5d6ff"""
Ta5d6ffMDScreen:
Ta5d6ff name: Ta5d6ff"Ta5d6ffhardware_screenTa5d6ff"
Ta5d6ff
Ta5d6ff BoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"

Ta5d6ff MDTopAppBar:
Ta5d6ff title: Ta5d6ff"Ta5d6ffHardwareTa5d6ff"
Ta5d6ff anchor_title: Ta5d6ff"Ta5d6ffleftTa5d6ff"
Ta5d6ff elevation: 0
Ta5d6ff left_action_items:
Ta5d6ff [[Ta5d6ff'Ta5d6ffmenuTa5d6ff'Ta5d6ff, lambda x: root.app.app.nav_drawer.set_state(Ta5d6ff"Ta5d6ffopenTa5d6ff"Ta5d6ff)]]
Ta5d6ff right_action_items:
Ta5d6ff [
Ta5d6ff [Ta5d6ff'Ta5d6ffcloseTa5d6ff'Ta5d6ff, lambda x: root.app.app.close_hardware_action(self)],
Ta5d6ff ]

Ta5d6ff ScrollView:
Ta5d6ff id: hardware_scrollview

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff8dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(28), dp(48), dp(28), dp(16)]

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffConfigure Hardware ParametersTffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDLabel:
Ta5d6ff id: hardware_info
Ta5d6ff markup: True
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff text_size: self.width, None
Ta5d6ff height: self.texture_size[1]


Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(0), dp(35), dp(0), dp(35)]

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: hardware_rnode_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffradio-handheldTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffRNodeTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.app.hardware_rnode_action(self)

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: hardware_modem_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffrouter-wirelessTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffRadio ModemTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.app.hardware_modem_action(self)
Ta5d6ff disabled: False

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: hardware_serial_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffcable-dataTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffSerial PortTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.app.hardware_serial_action(self)
Ta5d6ff disabled: False
Ta5d6ff"""

Te6edf3layout_hardware_modem_screen Tff7b72= Ta5d6ff"""
Ta5d6ffMDScreen:
Ta5d6ff name: Ta5d6ff"Ta5d6ffhardware_modem_screenTa5d6ff"
Ta5d6ff
Ta5d6ff BoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"

Ta5d6ff MDTopAppBar:
Ta5d6ff title: Ta5d6ff"Ta5d6ffRadio ModemTa5d6ff"
Ta5d6ff anchor_title: Ta5d6ff"Ta5d6ffleftTa5d6ff"
Ta5d6ff elevation: 0
Ta5d6ff left_action_items:
Ta5d6ff [[Ta5d6ff'Ta5d6ffmenuTa5d6ff'Ta5d6ff, lambda x: root.app.app.nav_drawer.set_state(Ta5d6ff"Ta5d6ffopenTa5d6ff"Ta5d6ff)]]
Ta5d6ff right_action_items:
Ta5d6ff [
Ta5d6ff [Ta5d6ff'Ta5d6ffcloseTa5d6ff'Ta5d6ff, lambda x: root.app.app.close_sub_hardware_action(self)],
Ta5d6ff ]

Ta5d6ff ScrollView:
Ta5d6ff id: hardware_modem_scrollview

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff8dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(28), dp(48), dp(28), dp(16)]

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffModem Hardware ParametersTffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDLabel:
Ta5d6ff id: hardware_modem_info
Ta5d6ff markup: True
Ta5d6ff text: Ta5d6ff"Ta5d6ffTo communicate using a Radio Modem, you will need to specify the following parameters. Serial port parameters must be set to match those of the modem. CSMA parameters can be left at their default values in most cases.Tffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff text_size: self.width, None
Ta5d6ff height: self.texture_size[1]

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffPort OptionsTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff # padding: [dp(0), dp(0), dp(0), dp(35)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_modem_baudrate
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffBaud RateTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(0), dp(0), dp(0), dp(24)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_modem_databits
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffData BitsTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_modem_parity
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffParityTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_modem_stopbits
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffStop BitsTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffCSMA ParametersTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(0), dp(0), dp(0), dp(0)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_modem_preamble
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffPreamble (ms)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_modem_tail
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffTX Tail (ms)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(0), dp(0), dp(0), dp(24)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_modem_persistence
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffPersistence (1-255)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_modem_slottime
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffSlot Time (ms)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffOptional SettingsTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff # padding: [dp(0), dp(0), dp(0), dp(35)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_modem_beaconinterval
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffBeacon Interval (seconds)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_modem_beacondata
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffBeacon DataTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)
Ta5d6ff"""

Te6edf3layout_hardware_rnode_screen Tff7b72= Ta5d6ff"""
Ta5d6ffMDScreen:
Ta5d6ff name: Ta5d6ff"Ta5d6ffhardware_rnode_screenTa5d6ff"
Ta5d6ff
Ta5d6ff BoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"

Ta5d6ff MDTopAppBar:
Ta5d6ff title: Ta5d6ff"Ta5d6ffRNodeTa5d6ff"
Ta5d6ff anchor_title: Ta5d6ff"Ta5d6ffleftTa5d6ff"
Ta5d6ff elevation: 0
Ta5d6ff left_action_items:
Ta5d6ff [[Ta5d6ff'Ta5d6ffmenuTa5d6ff'Ta5d6ff, lambda x: root.app.app.nav_drawer.set_state(Ta5d6ff"Ta5d6ffopenTa5d6ff"Ta5d6ff)]]
Ta5d6ff right_action_items:
Ta5d6ff [
Ta5d6ff [Ta5d6ff'Ta5d6ffcloseTa5d6ff'Ta5d6ff, lambda x: root.app.app.close_sub_hardware_action(self)],
Ta5d6ff ]

Ta5d6ff ScrollView:
Ta5d6ff id: hardware_rnode_scrollview

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff8dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(28), dp(48), dp(28), dp(16)]

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffRNode Hardware ParametersTffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDLabel:
Ta5d6ff id: hardware_rnode_info
Ta5d6ff markup: True
Ta5d6ff text: Ta5d6ff"Ta5d6ffTo communicate using an RNode, you will need to specify the following parameters. For two or more RNodes to be able to communicate, all parameters must match, except for the [i]Coding Rate[/i] and [i]TX Power[/i] parameter, which can vary between devices.Tffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff text_size: self.width, None
Ta5d6ff height: self.texture_size[1]

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(0), dp(0), dp(0), dp(48)]

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: rnode_mote_export
Ta5d6ff icon: Ta5d6ff"Ta5d6ffuploadTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffExportTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.app.hardware_rnode_export(self)

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: rnode_mote_import
Ta5d6ff icon: Ta5d6ff"Ta5d6ffdownloadTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffImportTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.app.hardware_rnode_import(self)

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffRadio OptionsTffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff # MDTextField:
Ta5d6ff # id: hardware_rnode_modulation
Ta5d6ff # hint_text: Ta5d6ff"Ta5d6ffModulationTa5d6ff"
Ta5d6ff # text: Ta5d6ff"Ta5d6ffLoRaTa5d6ff"
Ta5d6ff # disabled: True
Ta5d6ff # font_size: dp(24)

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff # padding: [dp(0), dp(0), dp(0), dp(35)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_frequency
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffFrequency (MHz)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_bandwidth
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffBandwidth (KHz)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_txpower
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffTX Power (dBm)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(0), dp(0), dp(0), dp(24)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_spreadingfactor
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffSpreading FactorTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_codingrate
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffCoding RateTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffOptional SettingsTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff # padding: [dp(0), dp(0), dp(0), dp(35)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_beaconinterval
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffBeacon Interval (seconds)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_beacondata
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffBeacon DataTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff # padding: [dp(0), dp(0), dp(0), dp(35)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_atl_short
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffAirime Limit Ta5d6ff%Ta5d6ff (15s)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_atl_long
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffAirime Limit Ta5d6ff%Ta5d6ff (1h)Ta5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff padding: [0,dp(14),dp(24),dp(0)]
Ta5d6ff height: dp(48)
Ta5d6ff
Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffControl RNode DisplayTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDSwitch:
Ta5d6ff id: hardware_rnode_framebuffer
Ta5d6ff pos_hint: Ta5d6ff{Ta5d6ff"Ta5d6ffcenter_yTa5d6ff"Ta5d6ff: 0.3}
Ta5d6ff active: False

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ff•Ta5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"
Ta5d6ff text_size: self.size
Ta5d6ff halign: Ta5d6ff"Ta5d6ffcenterTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.texture_size[1]
Ta5d6ff padding: [0, dp(2+14), 0, dp(22+24)]

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffWiFi & Ethernet ConnectionTffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDLabel:
Ta5d6ff id: hardware_rnode_info_wifi
Ta5d6ff markup: True
Ta5d6ff text: Ta5d6ff"Ta5d6ffIf your device is hosting or connected to a WiFi network, you can connect it by entering its IP address or hostname below.Ta5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff text_size: self.width, None
Ta5d6ff height: self.texture_size[1]

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff padding: [0,dp(12),dp(24),dp(0)]
Ta5d6ff height: dp(36)
Ta5d6ff
Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffConnect using WiFiTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDSwitch:
Ta5d6ff id: hardware_rnode_tcp
Ta5d6ff pos_hint: Ta5d6ff{Ta5d6ff"Ta5d6ffcenter_yTa5d6ff"Ta5d6ff: 0.3}
Ta5d6ff active: False

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff # spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff # padding: [dp(0), dp(0), dp(0), dp(35)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_tcp_host
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffRNode IP address or hostnameTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ff•Ta5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"
Ta5d6ff text_size: self.size
Ta5d6ff halign: Ta5d6ff"Ta5d6ffcenterTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.texture_size[1]
Ta5d6ff padding: [0, dp(2+14), 0, dp(22+24)]

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffBluetooth ConnectionTffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDLabel:
Ta5d6ff id: hardware_rnode_info
Ta5d6ff markup: True
Ta5d6ff text: Ta5d6ff"Ta5d6ffIf you enable connection via Bluetooth, Sideband will attempt to connect to any available and paired RNodes over Bluetooth.Tffea00\\Ta5d6ffnTffea00\\Ta5d6ffnIf your RNode uses BLE (ESP32-S3 and nRF devices) instead of classic Bluetooth, enable the [i]Device requires BLE[/i] option as well.Ta5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff text_size: self.width, None
Ta5d6ff height: self.texture_size[1]

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff padding: [0,0,dp(24),dp(0)]
Ta5d6ff height: dp(48)
Ta5d6ff
Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffConnect using BluetoothTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDSwitch:
Ta5d6ff id: hardware_rnode_bluetooth
Ta5d6ff pos_hint: Ta5d6ff{Ta5d6ff"Ta5d6ffcenter_yTa5d6ff"Ta5d6ff: 0.3}
Ta5d6ff active: False

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff padding: [0,0,dp(24),dp(48)]
Ta5d6ff height: dp(86)
Ta5d6ff
Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffDevice requires BLETa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDSwitch:
Ta5d6ff id: hardware_rnode_ble
Ta5d6ff pos_hint: Ta5d6ff{Ta5d6ff"Ta5d6ffcenter_yTa5d6ff"Ta5d6ff: 0.3}
Ta5d6ff active: False

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffBluetooth PairingTffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDLabel:
Ta5d6ff id: hardware_rnode_info
Ta5d6ff markup: True
Ta5d6ff text: Ta5d6ff"Ta5d6ffTo put an RNode into pairing mode, hold down the multi-function user button for more than 5 seconds, and release it. The display will indicate pairing mode. If the in-app pairing does not find any devices, use the Bluetooth settings of your device to scan and pair.Tffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff text_size: self.width, None
Ta5d6ff height: self.texture_size[1]

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(0), dp(0), dp(0), dp(12)]

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: hardware_rnode_bt_scan_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffbluetooth-connectTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffPair New DeviceTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.app.hardware_rnode_bt_scan_action(self)

Ta5d6ff MDBoxLayout:
Ta5d6ff id: rnode_scan_results
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(0), dp(0), dp(0), dp(12+24)]

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffPreffered Bluetooth DeviceTffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDLabel:
Ta5d6ff id: hardware_rnode_info
Ta5d6ff markup: True
Ta5d6ff text: Ta5d6ff"Ta5d6ffSideband will connect to the first available RNode that is paired. If you want to always use a specific RNode, you can enter its name here, for example Tffea00\\Ta5d6ff"Ta5d6ffRNode A8EBTffea00\\Ta5d6ff"Ta5d6ff.Ta5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff text_size: self.width, None
Ta5d6ff height: self.texture_size[1]

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff # padding: [dp(0), dp(0), dp(0), dp(35)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_rnode_bt_device
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffPreferred RNode Device NameTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ff•Ta5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"
Ta5d6ff text_size: self.size
Ta5d6ff halign: Ta5d6ff"Ta5d6ffcenterTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.texture_size[1]
Ta5d6ff padding: [0, dp(2+14), 0, dp(22)]

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Tffea00\\Ta5d6ffnTffea00\\Ta5d6ffnDevice Bluetooth ControlTffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDLabel:
Ta5d6ff id: hardware_rnode_info
Ta5d6ff markup: True
Ta5d6ff text: Ta5d6ff"Tffea00\\Ta5d6ffnTffea00\\Ta5d6ffnIf your RNode does not have a physical pairing button, you can enable Bluetooth and put it into pairing mode by first connecting it via a USB cable, and using the buttons below. When plugging in the RNode over USB, you must grant Sideband permission to the USB device for this to work.Tffea00\\Ta5d6ffnTffea00\\Ta5d6ffnYou can also change Bluetooth settings using the Tffea00\\Ta5d6ff"Ta5d6ffrnodeconfTffea00\\Ta5d6ff"Ta5d6ff utility from a computer.Tffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff text_size: self.width, None
Ta5d6ff height: self.texture_size[1]

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff # padding: [dp(0), dp(0), dp(0), dp(35)]

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: hardware_rnode_bt_on_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffbluetoothTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffEnable BluetoothTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.app.hardware_rnode_bt_on_action(self)

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: hardware_rnode_bt_off_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffbluetooth-offTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffDisable BluetoothTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.app.hardware_rnode_bt_off_action(self)
Ta5d6ff disabled: False

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: hardware_rnode_bt_pair_button
Ta5d6ff icon: Ta5d6ff"Ta5d6fflink-variantTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffStart Pairing ModeTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.app.hardware_rnode_bt_pair_action(self)
Ta5d6ff disabled: False
Ta5d6ff"""

Te6edf3layout_hardware_serial_screen Tff7b72= Ta5d6ff"""
Ta5d6ffMDScreen:
Ta5d6ff name: Ta5d6ff"Ta5d6ffhardware_serial_screenTa5d6ff"
Ta5d6ff
Ta5d6ff BoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"

Ta5d6ff MDTopAppBar:
Ta5d6ff title: Ta5d6ff"Ta5d6ffSerial PortTa5d6ff"
Ta5d6ff anchor_title: Ta5d6ff"Ta5d6ffleftTa5d6ff"
Ta5d6ff elevation: 0
Ta5d6ff left_action_items:
Ta5d6ff [[Ta5d6ff'Ta5d6ffmenuTa5d6ff'Ta5d6ff, lambda x: root.app.app.nav_drawer.set_state(Ta5d6ff"Ta5d6ffopenTa5d6ff"Ta5d6ff)]]
Ta5d6ff right_action_items:
Ta5d6ff [
Ta5d6ff [Ta5d6ff'Ta5d6ffcloseTa5d6ff'Ta5d6ff, lambda x: root.app.app.close_sub_hardware_action(self)],
Ta5d6ff ]

Ta5d6ff ScrollView:
Ta5d6ff id: hardware_serial_scrollview

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff8dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(28), dp(48), dp(28), dp(16)]

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffSerial Hardware ParametersTffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDLabel:
Ta5d6ff id: hardware_serial_info
Ta5d6ff markup: True
Ta5d6ff text: Ta5d6ff"Ta5d6ffTo communicate using a serial port, you will need to specify the following parameters. If communicating directly to another Reticulum instance over serial, the parameters must match the other device.Tffea00\\Ta5d6ffnTffea00\\Ta5d6ffnIf you are using a serial-connected device to pass on data to other Reticulum instances, it should be configured to pass data transparently to the desired endpoints.Tffea00\\Ta5d6ffnTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff text_size: self.width, None
Ta5d6ff height: self.texture_size[1]

Ta5d6ff MDLabel:
Ta5d6ff text: Ta5d6ff"Ta5d6ffPort OptionsTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff # padding: [dp(0), dp(0), dp(0), dp(35)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_serial_baudrate
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffBaud RateTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: Ta5d6ff"Ta5d6ff24dpTa5d6ff"
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(0), dp(0), dp(0), dp(24)]

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_serial_databits
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffData BitsTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_serial_parity
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffParityTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)

Ta5d6ff MDTextField:
Ta5d6ff id: hardware_serial_stopbits
Ta5d6ff hint_text: Ta5d6ff"Ta5d6ffStop BitsTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ff"
Ta5d6ff font_size: dp(24)
Ta5d6ff"""


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────